package ASAExpression;

import exceptions.ExecutionException;

/**
 * Classe representant le: "OU logique"
 * (Equation : S Ξ a + b)
 * @author D.romain
 * @author O.riad
 */
public class ASAOu extends ASAExpr {
    
    private ASAExpr e1;
    private ASAExpr e2;
    
    /**
     * Constructeur prenant en paramètre
     * deux ASAExpr 
     * @param e1 ASAExpr
     * @param e2 ASAExpr
     */
    public ASAOu(ASAExpr e1, ASAExpr e2) {
        this.e1 = e1;
        this.e2 = e2;
    }
    
    /**
     * Renvoie l'expression de gauche
     * @return ASAExp gauche
     */
    @Override
    public ASAExpr getExpr1() {
        return e1;
    }

    /**
     * Renvoie l'expression de droite
     * @return ASAExp droite
     */
    @Override
    public ASAExpr getExpr2() {
        return e2;
    }
    
    /**
     * Effectue le "et logique" entre les 
     * deux expressions
     * @return 1 si au moins une des deux 
     * expressions est vrai (retour != 0)
     * @throws ExecutionException 
     */
    @Override
    public int evalue() throws ExecutionException {
        if(this.e1.evalue() !=0 || this.e2.evalue() !=0){
            return 1;
        }
        return 0;
    }
    
    /**
     * Renvoie le resultat de l'opération sous forme 
     * de chaîne de caractères 
     * @return String resultat de l'évaluation
     * @throws ExecutionException 
     */
    @Override
    public String getLabelExplorateur() throws ExecutionException {
        return "|| " + this.evalue();
    }
}
